@@ -14,7 +14,7 @@ |
||
14 | 14 |
<% if has_oauth_configuration_for?('twitter') %> |
15 | 15 |
<p><%= link_to "Authenticate with Twitter", "/auth/twitter" %></p> |
16 | 16 |
<% end %> |
17 |
- <% if has_oauth_configuration_for?('thirty_seven_signals') %> |
|
17 |
+ <% if has_oauth_configuration_for?('37signals') %> |
|
18 | 18 |
<p><%= link_to "Authenticate with 37Signals (Basecamp)", "/auth/37signals" %></p> |
19 | 19 |
<% end -%> |
20 | 20 |
<% if has_oauth_configuration_for?('github') %> |
@@ -1,23 +1,35 @@ |
||
1 |
-LOADED_OMNIAUTH_STRATEGIES = { |
|
2 |
- 'twitter' => defined?(OmniAuth::Strategies::Twitter), |
|
3 |
- '37signals' => defined?(OmniAuth::Strategies::ThirtySevenSignals), |
|
4 |
- 'github' => defined?(OmniAuth::Strategies::GitHub) |
|
1 |
+OMNIAUTH_PROVIDERS = {}.tap { |providers| |
|
2 |
+ if defined?(OmniAuth::Strategies::Twitter) && |
|
3 |
+ (key = ENV["TWITTER_OAUTH_KEY"]).present? && |
|
4 |
+ (secret = ENV["TWITTER_OAUTH_SECRET"]).present? |
|
5 |
+ providers['twitter'] = { |
|
6 |
+ omniauth_params: [key, secret, authorize_params: {force_login: 'true', use_authorize: 'true'}] |
|
7 |
+ } |
|
8 |
+ end |
|
9 |
+ |
|
10 |
+ if defined?(OmniAuth::Strategies::ThirtySevenSignals) && |
|
11 |
+ (key = ENV["THIRTY_SEVEN_SIGNALS_OAUTH_KEY"]).present? && |
|
12 |
+ (secret = ENV["THIRTY_SEVEN_SIGNALS_OAUTH_SECRET"]).present? |
|
13 |
+ providers['37signals'] = { |
|
14 |
+ omniauth_params: [key, secret] |
|
15 |
+ } |
|
16 |
+ end |
|
17 |
+ |
|
18 |
+ if defined?(OmniAuth::Strategies::GitHub) && |
|
19 |
+ (key = ENV["GITHUB_OAUTH_KEY"]).present? && |
|
20 |
+ (secret = ENV["GITHUB_OAUTH_SECRET"]).present? |
|
21 |
+ providers['github'] = { |
|
22 |
+ omniauth_params: [key, secret] |
|
23 |
+ } |
|
24 |
+ end |
|
5 | 25 |
} |
6 | 26 |
|
7 | 27 |
def has_oauth_configuration_for?(provider) |
8 |
- LOADED_OMNIAUTH_STRATEGIES[provider.to_s] && ENV["#{provider.upcase}_OAUTH_KEY"].present? && ENV["#{provider.upcase}_OAUTH_SECRET"].present? |
|
28 |
+ OMNIAUTH_PROVIDERS.key?(provider.to_s) |
|
9 | 29 |
end |
10 | 30 |
|
11 | 31 |
Rails.application.config.middleware.use OmniAuth::Builder do |
12 |
- if has_oauth_configuration_for?('twitter') |
|
13 |
- provider 'twitter', ENV['TWITTER_OAUTH_KEY'], ENV['TWITTER_OAUTH_SECRET'], authorize_params: {force_login: 'true', use_authorize: 'true'} |
|
14 |
- end |
|
15 |
- |
|
16 |
- if has_oauth_configuration_for?('37signals') |
|
17 |
- provider '37signals', ENV['THIRTY_SEVEN_SIGNALS_OAUTH_KEY'], ENV['THIRTY_SEVEN_SIGNALS_OAUTH_SECRET'] |
|
18 |
- end |
|
19 |
- |
|
20 |
- if has_oauth_configuration_for?('github') |
|
21 |
- provider 'github', ENV['GITHUB_OAUTH_KEY'], ENV['GITHUB_OAUTH_SECRET'] |
|
22 |
- end |
|
32 |
+ OMNIAUTH_PROVIDERS.each { |name, config| |
|
33 |
+ provider name, *config[:omniauth_params] |
|
34 |
+ } |
|
23 | 35 |
end |